package com.nanyang.tms.api.service.receipt;

import com.nanyang.common.core.domain.ApiResult;
import com.nanyang.common.core.page.PageBean;
import com.nanyang.tms.api.dto.request.receipt.*;
import com.nanyang.tms.api.dto.response.receipt.*;

import java.util.List;

public interface ReceiptBillRpcService {
    /**
     * 列表
     * @param param
     * @return
     */
    ApiResult<PageBean<ReceiptBillPageResponse>> listReceiptBill(ReceiptBillQueryRequest param);

    /**
     * 列表
     * @param param
     * @return
     */
    ApiResult<PageBean<ReceiptBillFuzzyPageResponse>> listFuzzyReceiptBill(ReceiptBillFuzzyQueryRequest param);
    /**
     *
     * <p>getReceiptBillById</p>
     * <p>Description:(根据code获取详情)</p>
     *
     * @param code
     * @return
     */
    ApiResult<List<ReceiptBillDetailResponse>> selectByCode(String code);
    /**
     *
     * <p>saveReceiptBill</p>
     * <p>Description:(保存服务产品)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> saveReceiptBill(ReceiptBillAddRequest param);
    /**
     *
     * <p>updateReceiptBill</p>
     * <p>Description:(设置完成)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> updateState(ReceiptBillUpdateStateRequest param);
    /**
     *
     * <p>updateReceiptBill</p>
     * <p>Description:(作废)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> cancelState(ReceiptBillUpdateStateRequest param);
    /**
     * 前台-列表
     * @param param
     * @return
     */
    ApiResult<PageBean<ReceiptBillFrontPageResponse>> listFrontReceiptBill(ReceiptBillCustomerQueryRequest param);
    /**
     *
     * <p>selectFrontByCode</p>
     * <p>Description:(前台-根据code获取详情)</p>
     *
     * @param param
     * @return
     */
    ApiResult<List<ReceiptBillFrontDetailResponse>> selectFrontByCode(ReceiptBillFrontDetailRequest param);
}
